package Merlion.CRM.bean;

import Merlion.userManagement.entity.SystemUserEntity;
import javax.ejb.Remote;

@Remote
public interface SalesLeadModuleRemote {

    public java.lang.Long addSalesLead(java.lang.String salutation, java.lang.String firstName, 
            java.lang.String lastName, java.lang.String name, String companyRegId, java.lang.String industry, 
            double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String mobileNum, 
            java.lang.String faxNum, java.lang.String website, double rating, java.lang.String address, 
            java.lang.String addressState, java.lang.String country, java.lang.String city, 
            java.lang.String postalCode, java.lang.String emailAddress, java.lang.String businessType, 
            java.lang.String leadSource, java.lang.String title, java.lang.String department, java.util.Date dob, 
            java.lang.String description);

    public void editSalesLead(java.lang.Long id, java.lang.String salutation, java.lang.String firstName, java.lang.String lastName, java.lang.String name, java.lang.String industry, double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String mobileNum, java.lang.String faxNum, java.lang.String website, double rating, java.lang.String address, java.lang.String addressState, java.lang.String country, java.lang.String city, java.lang.String postalCode, java.lang.String emailAddress, java.lang.String businessType, java.lang.String status, java.lang.String leadSource, java.lang.String title, java.lang.String department, java.util.Date dob, java.lang.String description);

    public void deleteSalesLead(java.lang.Long id);

    public java.lang.Long convertSalesLead(java.lang.Long id);

    public void updateSalesLeadStatus(java.lang.Long id, java.lang.String status);

    public java.lang.Long addContact(java.lang.String salutation, java.lang.String firstName, 
            java.lang.String lastName, java.lang.Long companyId, java.lang.String companyName, 
            java.lang.String leadSource, java.lang.String title, java.lang.String department, 
            java.lang.String contactNum, java.lang.String mobileNum, java.lang.String faxNum, 
            java.lang.String emailAddress, java.lang.String address, java.lang.String addressState, 
            java.lang.String country, java.lang.String city, java.lang.String postalCode, 
            java.util.Date dob, java.lang.String description);

    public void editContact(java.lang.Long id, java.lang.String salutation, java.lang.String firstName, java.lang.String lastName, java.lang.Long companyId, java.lang.String companyName, java.lang.String leadSource, java.lang.String title, java.lang.String department, java.lang.String contactNum, java.lang.String mobileNum, java.lang.String faxNum, java.lang.String emailAddress, java.lang.String address, java.lang.String addressState, java.lang.String country, java.lang.String city, java.lang.String postalCode, java.util.Date dob, java.lang.String description);

    public void deleteContact(java.lang.Long id);

    public java.lang.Long addCustomer(java.lang.String name, String companyRegId, java.lang.String industry, 
            double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String faxNum, 
            java.lang.String website, double rating, java.lang.String address, java.lang.String addressState, 
            java.lang.String country, java.lang.String city, java.lang.String postalCode, java.lang.String emailAddress, 
            java.lang.String businessType, java.lang.String description, java.lang.String custExId, 
            java.lang.String ownership, java.lang.String tickerSymbol, java.lang.String sicCode);

    public void editBillingAddress(java.lang.Long id, java.lang.String bStreet, java.lang.String bCity, java.lang.String bState, java.lang.String bCode, java.lang.String bCountry);

    public void editShippingAddress(java.lang.Long id, java.lang.String sStreet, java.lang.String sCity, java.lang.String sState, java.lang.String sCode, java.lang.String sCountry);

    public void editCustomer(java.lang.Long id, java.lang.String name, java.lang.String industry, 
            double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String faxNum, 
            java.lang.String website, double rating, java.lang.String address, java.lang.String addressState, 
            java.lang.String country, java.lang.String city, java.lang.String postalCode, java.lang.String emailAddress, 
            java.lang.String businessType, java.lang.String description, java.lang.String custExId, 
            java.lang.String ownership, java.lang.String tickerSymbol, java.lang.String sicCode);

    public void deleteCustomer(java.lang.Long id);

    public java.util.List<Merlion.util.state.ClientState> viewSalesLeads();

    public java.util.List<Merlion.util.state.ClientState> viewCustomers();

    public java.util.List<SystemUserEntity> getAllCustomerExecutives();

    public java.util.List<Merlion.util.state.ClientState> viewClients();

    public Long[] createBillingShippingAddress(java.lang.Long customerId, java.lang.String billingStreet, java.lang.String billingCity, java.lang.String billingState, java.lang.String billingCode, java.lang.String billingCountry, java.lang.String shippingStreet, java.lang.String shippingCity, java.lang.String shippingState, java.lang.String shippingCode, java.lang.String shippingCountry);

    public java.util.List<Merlion.util.state.ContactState> viewContacts();

    //public void deleteShippingAddress(java.lang.Long id);

    public void setPrimaryBillingAddress(java.lang.Long id, java.lang.Long customerId);

    public void setPrimaryShippingAddress(java.lang.Long id, java.lang.Long customerId);

    public void removeShippingAddressfromCustomerData(java.lang.Long id, java.lang.Long customerId);

    public void removeBillingAddressfromCustomerData(java.lang.Long id, java.lang.Long customerId);

    public Merlion.CRM.entity.BillingAddressEntity addBillingAddress(java.lang.String billingStreet, java.lang.String billingCity, java.lang.String billingState, java.lang.String billingCode, java.lang.String billingCountry);

    public Merlion.CRM.entity.ShippingAddressEntity addShippingAddress(java.lang.String shippingStreet, java.lang.String shippingCity, java.lang.String shippingState, java.lang.String shippingCode, java.lang.String shippingCountry);

    public int countLeads(int month);

    public java.util.List<Merlion.util.helper.ClientsAnalysis> getLeadList();

    public Merlion.util.state.ClientState searchClient(java.lang.Long id);

    public java.util.List<Merlion.util.state.ClientState> viewConvertedLeads();

    public Merlion.util.state.AddressState searchBillingAddress(java.lang.Long id);

    public Merlion.util.state.AddressState searchShippingAddress(java.lang.Long id);

    public Merlion.util.state.ContactState searchContact(java.lang.Long id);

    public int countClients(int month);

    public int countCustomers(int month);

    public java.util.List<Merlion.util.helper.ClientsAnalysis> getClientList();

    public java.util.List<Merlion.util.helper.ClientsAnalysis> getCustomerList();

    public void associateBillingAddressWithCustomer(java.lang.Long customerId, java.lang.Long addressId);

    public void associateShippingAddressWithCustomer(java.lang.Long customerId, java.lang.Long addressId);

    public java.util.List<Merlion.util.state.ContactState> viewContactsForClients(java.lang.Long id);

    public void requestForNewCreditProfileAccount(java.lang.Long customerId, java.lang.String customerName);

    public java.lang.Long addCustomer2(java.lang.String name, java.lang.String companyRegId, java.lang.String industry, double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String faxNum, java.lang.String website, double rating, java.lang.String address, java.lang.String addressState, java.lang.String country, java.lang.String city, java.lang.String postalCode, java.lang.String emailAddress, java.lang.String businessType, java.lang.String description, java.lang.String custExId, java.lang.String ownership, java.lang.String tickerSymbol, java.lang.String sicCode);

    public java.util.List<Merlion.util.state.ClientState> viewCustomers2();

    public boolean checkClientStatus(Merlion.CRM.entity.ClientEntity client);

    public java.util.List<Merlion.util.state.ClientState> viewClients2();

    public java.lang.Long convertSalesLead2(java.lang.Long id);

    public java.util.List<Merlion.util.state.ContactState> viewContacts2();

    public void editCustomer2(java.lang.Long id, java.lang.String name, java.lang.String industry, double annualRevenue, int numOfEmployees, java.lang.String contactNum, java.lang.String faxNum, java.lang.String website, double rating, java.lang.String address, java.lang.String addressState, java.lang.String country, java.lang.String city, java.lang.String postalCode, java.lang.String emailAddress, java.lang.String businessType, java.lang.String description, java.lang.String custExId, java.lang.String ownership, java.lang.String tickerSymbol, java.lang.String sicCode);
}
